package org.codeart.flyweight.demo1;

/**
 * 可共享的具体的享元类
 * 在具体的享元类中需要将内部状态和外部状态分开处理
 */
public class ConcreteFlyweight extends FlyWeight {

    /**
     * 内部状态，同一个享元对象的内部状态是一致的
     */
    private final String inside;

    public ConcreteFlyweight(String inside) {
        this.inside = inside;
    }

    /**
     * 外部状态在使用的时候，通常是有外部设置，不保存在享元对象中，即使是同一个对象
     * @param state
     */
    @Override
    public void operate(String state) {
        System.out.println("享元对象的内部状态: " + inside + ", 外部状态: " + state);
    }
}
